See 13000 threads is a huge amount, which can cause your machine to get hang and other issues like "Memory Out of Index", High CPU usage etc. and that depends upon your script too i.e.
- How many requests are there in your script? -- Generally REST requests are not that heavy and I am considering that you have only 1 REST request in your script.
- How many listeners and what type of listeners you have used? -- Use light lisenters like 'Data Writer', 'Aggregate Report'.
Don't use any Assertion.
Best possible way would be to use distributed environment but it is not possible in your case (as you mentioned). So you must specify the Ramp Up time in your script to avoid loss of your machine and time.
Now the question is how much Ramp Up you need to specify. The best way is to go by Hit and Trial method. You first need to execute your script for 1000 or 2000 threads load, and then see if it works fine or not. If it is not working fine then add some Ramp Up as this will provide some time to JMeter to have some rest and get back its breath. Start with Ramp Up of 10 secs for 2000 threads and see the result.
- If this works fine then it indicates that you can load upto 200 threads per second, so set your Ramp Up for 13000 threads accordingly. But if you think 2000 threads is easy target then go for 5000 threads.
- If this doesn't work fine then increase your Ramp Up time in such a way that you get that threshold value (i.e. Ramp Up = X) at which your script works fine for 2000 threads and decide you Ramp Up for 13000 threads accordingly.
There are no hard and fast rules for setting up Ramp Up time, it all depends on your machine, its configuration, JMeter heap size, your script, its size and elements being used in your script.