- do not use GetShortName approach for mmap on windows (#408)
- additional test for long file names on windows Signed-off-by: raver119 <raver119@gmail.com>master
parent
2ecabde500
commit
8f765c80ff
|
@ -145,8 +145,6 @@ void _mmap(Nd4jLong* result, size_t length, const char *fileName) {
|
||||||
auto shortName = new TCHAR[sz];
|
auto shortName = new TCHAR[sz];
|
||||||
GetShortPathName(fileName, shortName, sz);
|
GetShortPathName(fileName, shortName, sz);
|
||||||
|
|
||||||
delete[] shortName;
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#pragma warning(push)
|
#pragma warning(push)
|
||||||
#pragma warning(disable: 4293)
|
#pragma warning(disable: 4293)
|
||||||
|
@ -170,7 +168,9 @@ void _mmap(Nd4jLong* result, size_t length, const char *fileName) {
|
||||||
#pragma warning(pop)
|
#pragma warning(pop)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
h = CreateFile(shortName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE | FILE_SHARE_READ, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr);
|
h = CreateFileA(fileName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE | FILE_SHARE_READ, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr);
|
||||||
|
|
||||||
|
delete[] shortName;
|
||||||
|
|
||||||
if (h == INVALID_HANDLE_VALUE) {
|
if (h == INVALID_HANDLE_VALUE) {
|
||||||
errno = __map_mman_error(GetLastError(), EPERM);
|
errno = __map_mman_error(GetLastError(), EPERM);
|
||||||
|
|
|
@ -357,6 +357,29 @@ public class SpecialWorkspaceTests extends BaseNd4jTest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testMmapedWorkspace_Path_Limits_1() throws Exception {
|
||||||
|
if (!Nd4j.getEnvironment().isCPU())
|
||||||
|
return;
|
||||||
|
|
||||||
|
// getting very long file name
|
||||||
|
val builder = new StringBuilder("long_file_name_");
|
||||||
|
for (int e = 0; e < 100; e++)
|
||||||
|
builder.append("9");
|
||||||
|
|
||||||
|
|
||||||
|
val tmpFile = Files.createTempFile("some", builder.toString());
|
||||||
|
val mmap = WorkspaceConfiguration.builder()
|
||||||
|
.initialSize(200 * 1024L * 1024L) // 200mbs
|
||||||
|
.tempFilePath(tmpFile.toAbsolutePath().toString())
|
||||||
|
.policyLocation(LocationPolicy.MMAP)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
try (val ws = Nd4j.getWorkspaceManager().getAndActivateWorkspace(mmap, "M2")) {
|
||||||
|
val x = Nd4j.rand(DataType.FLOAT, 1024);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public char ordering() {
|
public char ordering() {
|
||||||
return 'c';
|
return 'c';
|
||||||
|
|
Loading…
Reference in New Issue