Posts

Post marked as solved
1 Replies
1.7k Views
How can I copy a SIMD float4x4 matrix to a vertex shader by using the setVertexBytes:length:atIndex message of a render command encoder?
Posted
by Hardy.
Last updated
.
Post not yet marked as solved
1 Replies
552 Views
The examples in LearnMetalCpp do in the renderer's draw method something like this: select a frame for the instance buffer create a new command buffer call dispatch_semaphore_wait to make sure that the selected instance buffer is not used by Metal put dispatch_semaphore_signal into the command buffer's completed handler modify the instance buffer and some other Metal related variables commit the command buffer Depending on the number of frames used and the complexity of the scene there can be a couple of frames in the command queue. Suppose the window (and its related view) is closed while Metal is still busy with items in the command queue. This means that the semaphore is still in use. How is it guaranteed that the semaphore is destroyed after the view is closed? Or is it guaranteed that the view's destructor is only called after the command queue has finished all its work?
Posted
by Hardy.
Last updated
.
Post not yet marked as solved
3 Replies
3.3k Views
I am intializing a UIDocumentPickerViewController with the UTIs public.text and public.text-plain. UIDocumentPickerViewController* documentPickerController = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:[NSArray arrayWithObjects:@"public.text",@"public.text-plain",nil] inMode:UIDocumentPickerModeImport];When selecting a text file I get the error message "Failed to associate thumbnails for picked URL file:///private/var/mobile/Library/Mobile%20Documents/com~apple~CloudDocs/NIC.txt with the Inbox copy file:///private/var/mobile/Containers/Data/Application/B857A5E7-74FE-4479-B899-B61D524B7E0D/tmp/***-Inbox/NIC.txt: Error Domain=QLThumbnailErrorDomain Code=102 "(null)" UserInfo={NSUnderlyingError=0x28250df20 {Error Domain=GSLibraryErrorDomain Code=3 "Generation not found" UserInfo={NSDescription=Generation not found}}}".What can I do to get rid of this error message?
Posted
by Hardy.
Last updated
.
Post not yet marked as solved
1 Replies
2.7k Views
In iOS 11.0+ I use the following statements to add a UISearchController to the navigation bar:[[self navigationItem] setSearchController:[self myUISearchController]]; [[self navigationItem] setHidesSearchBarWhenScrolling:NO]; [self setDefinesPresentationContext:YES];To hide the UISearchController I tried the following:[[self myUISearchController] setActive:NO]; [[self myUISearchController] removeFromParentViewController]; // just a try [[self navigationItem] setSearchController:nil]; // this should be sufficient [self myUISearchController:nil];Actually, the search controller disappears but leaves a black rectangle at the position where it was. It seems to be that the UITableViewController inside the UINavigationController does not re-align its table view and therefore leaves a black rectangle.Any ideas?
Posted
by Hardy.
Last updated
.
Post not yet marked as solved
3 Replies
1.9k Views
Hi, is there any way to activate the include header path autocomplete functionality again in Xcode 13 using C++ or has this feature been abandoned? Regards, Hartwig
Posted
by Hardy.
Last updated
.
Post not yet marked as solved
0 Replies
441 Views
Assume I have got a WKInterfaceGroup object. The group object is used to determine the position of a child object. In case I have as a child a label or an image. Is it possible to let the label or image draw beyond the bounds of the group object?
Posted
by Hardy.
Last updated
.
Post not yet marked as solved
2 Replies
985 Views
Consider the following code #include <chrono> #include <iostream> #include <random> #include <vector> class TestClass { public:   int A = 0;   int B = 4; protected: private: }; int main(int argc, const char * argv[]) {   std::random_device randomDevice;   std::mt19937 mersenneTwister(randomDevice());   std::uniform_int_distribution<size_t> distribution(1,255);   for (size_t i=0; i<10000000; ++i)   {     size_t const vectorSize = distribution(mersenneTwister)+1;     TestClass* testVector(reinterpret_cast<TestClass*>(malloc(vectorSize*sizeof(TestClass))));     if (testVector[0].A == 0x0ffeefed)     {       std::cout << "Sorry value hit." << std::endl;       break;     } /* if */     free(testVector);   } /* for */   return 0; } Clang completely removes the for-loop with optimisation -O3. I am a bit surprised. Although testVector will contain only garbage, I expected the loop not to be removed (actually also no warning was issued, only the analyser detected that testVector contains garbage). If I add a line assigning a value to a random element of testVector, the loop is not removed. PS: I wanted to use the loop for testing the execution speed of malloc and free.
Posted
by Hardy.
Last updated
.
Post not yet marked as solved
1 Replies
693 Views
Where can if find any documentation about MPSGraph besides the WWDC sample code?
Posted
by Hardy.
Last updated
.
Post not yet marked as solved
7 Replies
2.4k Views
I have not found any official documentation that Xcode's formatting is supporting Doxygen comments. In the past Xcode's formatting seems to have worked but with Xcode 11 comment formatting (highlighting) is broken at several places. Therefore, does Xcode support Doxygen comments?
Posted
by Hardy.
Last updated
.
Post not yet marked as solved
0 Replies
739 Views
Suppose the directory structure of my project is Apps.xcworkspace App A (folder) A.xcodeproj .. App B (folder) B.xcodeproj .. A and B project (should) use both versioning. Unfortunately, this does not work (out of the box). Only when changing the directory structure to Apps.xcworkspace A.xcodeproj App A (folder) .. B.xcodeproj App B (folder) .. automatic version incrementing works. Is there a possibility to make also the first version work? PS: I am using a script that is called at the end of a successfully finished build process containing only one line: `xcrun agvtool next-version -all ` PPS: In the man pages is mentioned that agvtool is to be started in the folder where the project resides but how can I do this for each project in the workspace?
Posted
by Hardy.
Last updated
.
Post not yet marked as solved
0 Replies
460 Views
Is this the right method (see below) to update means and variances in the callback updateMeanAndVarianceWithCommandBuffer:batchNormalizationState:? (MPSCNNNormalizationMeanAndVarianceState*) updateMeanAndVarianceWithCommandBuffer:(id&lt;MTLCommandBuffer&gt;)commandBuffer batchNormalizationState:(MPSCNNBatchNormalizationState*)batchNormalizationState {   MPSVector* determinedMeans = [[MPSVector alloc] initWithBuffer:[batchNormalizationState mean] descriptor:[MPSVectorDescriptor vectorDescriptorWithLength:[self featureChannels] dataType:[self dataType]]];   MPSVector* determinedVariances = [[MPSVector alloc] initWithBuffer:[batchNormalizationState variance] descriptor:[MPSVectorDescriptor vectorDescriptorWithLength:[self featureChannels] dataType:[self dataType]]]; [[self meansOptimizer] encodeToCommandBuffer:commandBuffer inputGradientVector:determinedMeans inputValuesVector:[self meansVector] inputMomentumVector:nil resultValuesVector:[self meansVector]]; [[self variancesOptimizer] encodeToCommandBuffer:commandBuffer inputGradientVector:determinedVariances inputValuesVector:[self variancesVector] inputMomentumVector:nil resultValuesVector:[self variancesVector]]; [batchNormalizationState setReadCount:[batchNormalizationState readCount]-1];   return [self meanAndVarianceState]; } The means and variances optimisers are initialised like: _meansOptimizer = [[MPSNNOptimizerStochasticGradientDescent alloc] initWithDevice:_device momentumScale:0.0 useNestrovMomentum:NO optimizerDescriptor:[MPSNNOptimizerDescriptor optimizerDescriptorWithLearningRate:-0.1                                                                                                gradientRescale:1.0f                                                                                             regularizationType:MPSNNRegularizationTypeL2                                                                                      regularizationScale:-1.0f]];  _variancesOptimizer = [[MPSNNOptimizerStochasticGradientDescent alloc] initWithDevice:_device                                        momentumScale:0.0 useNestrovMomentum:NO optimizerDescriptor:[MPSNNOptimizerDescriptor optimizerDescriptorWithLearningRate:-0.1 gradientRescale:1.0f regularizationType:MPSNNRegularizationTypeL2 regularizationScale:-1.0f]]; By using this method as in GitHub - https://github.com/apple/turicreate/blob/master/src/ml/neural_net/mps_weight.mm the callback does not crash anymore but I am not sure if this is correct. Especially because the read count has to be manually decremented, is this OK? PS: [self meansVector] and [self variancesVector] return MPSVector objects. PPS: [self dataType] returns MPSDataTypeFloat32.
Posted
by Hardy.
Last updated
.
Post not yet marked as solved
2 Replies
869 Views
Does anybody know why you hardly find any documentation about MPS in the official documentation? It seems to be that the only documentation available from Apple can be found in the headers or are there any other sources?PS: I filed a documentation bug report.
Posted
by Hardy.
Last updated
.
Post not yet marked as solved
0 Replies
460 Views
Assume I have a node with w x h x channel == 2x2x2 with elements [row1column1channel1, row1column2channel1, row2column1channel1, row2column2channel1],[row1column1channel2, row1column2channel2, row2column1channel2, row2column2channel2] (w, h, channel ordering). Now, I am reshaping (flattening) the data to 8x1x1 by using a reshaping node. How, is the reshaping done (what is the order of the elements)? Is there a possibility to manipulate the order of the elements by using the MPSReshapeNode?
Posted
by Hardy.
Last updated
.