GPSFileDepot.com
 

News:

Welcome to GPSFileDepot!

Main Menu

cgpsmapper and Windows 10

Started by whiskeyportal, April 12, 2016, 01:02:30 PM

Previous topic - Next topic

whiskeyportal

Has anyone ran cgpsmapper on Windows 10? And if so, were there any issues? Just wondering whether I'll have any issues if when I upgrade my machine it comes with 10.
Thanks for any feedback you might be able to provide.

-Oz-

I've been using it for all my 2016 updates and no issues.
Dan Blomberg
Administrator - GPSFileDepot
GPS Units: Garmin Dakota 20, Garmin GPSMap 60csx, Nuvi 255W, Nuvi 250W, ForeRunner 110, Fenix 2, Tactix Bravo, Foretrex 401
See/Download My Maps!

whiskeyportal

It seems to be running fine on some of my machines, but completely kills the new VM running windows 10. As soon as you try and do anything with cgps the machine reboots.
Anyone else ran into this issue?
Thanks

jolly47roger

I run Basecamp under Windows 10 with no problem - except that if I try to run parallel streams they sometimes seem to conflict and one will fail. But that may not be specific to W10.

whiskeyportal

I run into the same issue where more than one instance starting at the same time will cause access violation errors, but usually I can have 3 instances running fine.
The issue I'm having is that cgps won't run on a Virtual Machine. Anyone else had this issue and were they able to find a work around?

Red90


whiskeyportal

Quote from: Red90 on July 29, 2016, 08:25:24 AM
No problems here.
You're running cgps on a VM? Are you using windows 10?

popej

Quote from: whiskeyportal on July 28, 2016, 04:33:04 PM
I run into the same issue where more than one instance starting at the same time will cause access violation errors, but usually I can have 3 instances running fine.
I have experienced the same problem, actually there are 2 separate problems. First is obvious - you should use separate temporary directory for each instance (as indicated by TEMP or TMP variable, not sure which one). Second problem is more weird, like there is some kind of crosstalk between instances. I have solved it by setting different affinity for each instance, so it runs on separate CPU core.

I usually run 8 instances at once starting them with batch that set TEMP/TMP variables and affinity for each one. Something like this:

set TEMP=.\instance1
set TMP=.\instance1
start "cgpsmapper instance 1" /AFFINITY 0x01 cgpsmapper .....

whiskeyportal

#8
Quote from: popej on July 29, 2016, 11:28:32 AM
Quote from: whiskeyportal on July 28, 2016, 04:33:04 PM
I run into the same issue where more than one instance starting at the same time will cause access violation errors, but usually I can have 3 instances running fine.
I have experienced the same problem, actually there are 2 separate problems. First is obvious - you should use separate temporary directory for each instance (as indicated by TEMP or TMP variable, not sure which one). Second problem is more weird, like there is some kind of crosstalk between instances. I have solved it by setting different affinity for each instance, so it runs on separate CPU core.

I usually run 8 instances at once starting them with batch that set TEMP/TMP variables and affinity for each one. Something like this:

set TEMP=.\instance1
set TMP=.\instance1
start "cgpsmapper instance 1" /AFFINITY 0x01 cgpsmapper .....

that's a good idea. I have just been using different folders with cgps in them, and at the end of a python script I had each instance wait 1 second before kicking off the next transcode.bat. I'll try your method for sure and see how many I can run safely. Do you edit the process.bat file? I'd love to check out how you scripted it.

Still haven't figured out why it won't run at all on a Virtual Machine though.

popej

Problems in VM could be due to protection scheme, that cGPSmapper is using.

I don't use process.bat. I have my own procedures and tool chain. For compilation I have prepared 8 folders called A1 to A8, each with batches _kompilacja.cmd like this:
set MDIR=temp_dir
rd /Q /S %MDIR%
md %MDIR%
set TMP=%MDIR%
set TEMP=%MDIR%
for %%i in (*.mp) do "C:\Program Files (x86)\cGPSmapperRoutable\cgpsmapper.exe" -s x -l "%%i"
rd /Q /S %MDIR%


Then I have a batch copy_cgps.bat, which copy source files to all folders and execute compilation. Input option to batch is path to folder with source mp files.
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set WORKDIR=C:\Garmin\cGPSmapper

SET /A numer=0
for /F %%I in ('dir /B /O:-S %1\*.mp') do (
if !numer! GEQ 8 (
set /A numer=1
) else (
SET /A numer=!numer! +1
)
copy %1\%%I %WORKDIR%\A!numer!
)

pushd %WORKDIR%\A1
start "cgpsmapper A1" /MIN /BELOWNORMAL /AFFINITY 0x1 cmd /C _kompilacja.cmd
popd
pushd %WORKDIR%\A2
start "cgpsmapper A2" /MIN /BELOWNORMAL /AFFINITY 0x4 cmd /C _kompilacja.cmd
popd
pushd %WORKDIR%\A3
start "cgpsmapper A3" /MIN /BELOWNORMAL /AFFINITY 0x10 cmd /C _kompilacja.cmd
popd
pushd %WORKDIR%\A4
start "cgpsmapper A4" /MIN /BELOWNORMAL /AFFINITY 0x40 cmd /C _kompilacja.cmd
popd
pushd %WORKDIR%\A5
start "cgpsmapper A5" /MIN /BELOWNORMAL /AFFINITY 0x80 cmd /C _kompilacja.cmd
popd
pushd %WORKDIR%\A6
start "cgpsmapper A6" /MIN /BELOWNORMAL /AFFINITY 0x20 cmd /C _kompilacja.cmd
popd
pushd %WORKDIR%\A7
start "cgpsmapper A7" /MIN /BELOWNORMAL /AFFINITY 0x8 cmd /C _kompilacja.cmd
popd
pushd %WORKDIR%\A8
start "cgpsmapper A8" /MIN /BELOWNORMAL /AFFINITY 0x2 cmd /C _kompilacja.cmd
popd

ENDLOCAL


This is a bit simplified version, my actual scripts set up ramdisk for temporary directory and preserve log files from compilation.

whiskeyportal

#10
Interesting approach. I'll have to try that. I'm experimenting using this section of script to kick off 4 runs at the same time
print subprocess.Popen("cd c:\cgpsprocessing\cgpsrun1", shell=True, stdout=subprocess.PIPE).stdout.read()
os.chdir("c:\cgpsprocessing\cgpsrun1")
print subprocess.Popen("start /affinity 0x3 transcode.bat", shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)
print("run 1 started using cores 0 & 1")
time.sleep(3)
print subprocess.Popen("cd c:\cgpsprocessing\cgpsrun2", shell=True, stdout=subprocess.PIPE).stdout.read()
os.chdir("c:\cgpsprocessing\cgpsrun2")
print subprocess.Popen("start /affinity 0xC transcode.bat", shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)
print("run 2 started using cores 2 & 3")
time.sleep(3)
print subprocess.Popen("cd c:\cgpsprocessing\cgpsrun3", shell=True, stdout=subprocess.PIPE).stdout.read()
os.chdir("c:\cgpsprocessing\cgpsrun3")
print subprocess.Popen("start /affinity 0x30 transcode.bat", shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)
print("run 3 started using cores 4 & 5")
time.sleep(3)
print subprocess.Popen("cd c:\cgpsprocessing\cgpsrun4", shell=True, stdout=subprocess.PIPE).stdout.read()
os.chdir("c:\cgpsprocessing\cgpsrun4")
print subprocess.Popen("start /affinity 0xC0 transcode.bat", shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)
print("run 1 started using cores 6 & 7")

I'm using python for this. I'm trying the sleep function in between starting runs for this example to try and stop the  Access violation errors, but I keep getting hit with them, and Error R007:Node reduction errors which is really annoying when you're trying to run a huge map and it stops processing a run all night.

Right now I have a python script I wrote that copies 5 processing folders, each with copies of cgpsmapper in the, to processing folders. Then checks mp_types for errors, and builds catalogs in global mapper. Then it imports those catalogs and tiles them out in .mp format. When it's finished, it erases all blank .mp files, and move the .mp files over 150Mb to another working directory and splits them up more. Then it writes a list of all the .mp files, and splits that list by a number I specify in the script and writes those as transcodeq.txt files. Then it sends me an email notifying me that it is kicking off cgpsmapper runs, and starts them. If I could just get rid of the access violation errors life would be great.

popej

I get no crashes anymore. I used to get them, before designing my procedure.

Do your scripts set environment variables for temporary directory? cGPSmapper creates temporary files while compiling a map. It uses some kind of random name for subfolder in temporary directory, but I think it uses time expressed in seconds as a random value and conflicts are still possible.

whiskeyportal

No, I'm not making temporary directories. But I will from now on for sure. Do you mind if I use your examples?

popej

You are welcome use or adopt my scripts.

santana

Does anybody know where you can download cgpsmapper? Original site (cgpsmapper.com) seems to be down.

Thanks in advance.